﻿#include "database.h"

database::database()
{

}



QSqlQuery database::exec(const QString &query,QString text) {
    QSqlQuery q(db);
    q.exec(query);
    if(text!=nullptr){
        qDebug()<<text<<": "<<query;
        qDebug()<<"--";
    }
    return q;
}
bool database::open_db(){
        db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName("./Are_You_Hungry.db");
        if(!db.open()){
            qDebug()<<"打开失败:"<<db.lastError().text();
            return false;
        }else{
            qDebug()<<"打开成功";
        }
        return true;
}
QString database::copyImageToDirectory(const QString &targetDirectory)
{
    // 1. 打开文件对话框选择图片
    QString sourceFilePath = QFileDialog::getOpenFileName(nullptr,"选择图片",QDir::homePath(),
                                                          "图片文件 (*.png *.jpg *.jpeg *.bmp *.gif)");

    if (sourceFilePath.isEmpty()) {
        return QString(); // 用户取消了选择
    }

    QFileInfo fileInfo(sourceFilePath);
    QString fileName = fileInfo.fileName();

    // 2. 检查目标目录是否存在，不存在则创建
    QDir targetDir(targetDirectory);
    if (!targetDir.exists()) {
        if (!targetDir.mkpath(".")) {
            QMessageBox::warning(nullptr, "错误", "无法创建目标目录");
            return QString();
        }
    }

    QString destinationFilePath = targetDir.filePath(fileName);

    // 3. 避免文件名冲突，如果文件已存在则添加编号
    int counter = 1;
    while (QFile::exists(destinationFilePath)) {
        QString baseName = fileInfo.baseName();
        QString extension = fileInfo.completeSuffix();
        destinationFilePath = targetDir.filePath(
            QString("%1_%2.%3").arg(baseName).arg(counter).arg(extension)
        );
        counter++;
    }

    // 4. 复制文件
    if (!QFile::copy(sourceFilePath, destinationFilePath)) {
        QMessageBox::warning(nullptr, "错误", "无法复制文件");
        return QString();
    }

    // 5. 返回复制后的文件路径
    return destinationFilePath;
}
void database::close(){
    db.close();
}
